/* - - - 函数 - - - */

// 采用 "函数声明" (或称作"函数语句") 方式定义函数
// "函数声明": The function declaration 
// "函数语句": function statement
function add( a , b ) {
    let c = a + b ;
    return c ;
}

// 直接通过函数名来调用函数
let result = add( 10 , 20 );
console.log( result );

// 采用"函数表达式"方式定义函数
// "函数表达式": The function expression
let div = function( a , b ) {
    return a / b ;
}

// 通过变量名来调用函数(这个变量中存储的就是函数引用)
result = div( 100 , 20 );
console.log( result );

// 当函数只使用一次时，通常使用IIFE 
// IIFE: Immediately Invokable Function Expressions，立即执行的函数表达式
// 第一个小括号中采用函数表达式定义一个函数，第二个小括号表示为该函数传入参数
( function( param ){ console.log( param ) } )( '小姜' );

// 采用 "箭头函数表达式" 方式定义函数
let sub = (a,b) => { 
    return a - b ;
}

// 通过变量名来调用箭头函数
result = sub( 20,15);
console.log( result );

// 当一门编程语言的函数可以被当作变量一样用时，则称这门语言拥有"头等函数"(First-class Function)

// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions